home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Chip 2007 January, February, March & April
/
Chip-Cover-CD-2007-02.iso
/
Pakiet bezpieczenstwa
/
mini Pentoo LiveCD 2006.1
/
mpentoo-2006.1.iso
/
livecd.squashfs
/
sbin
/
modules-update
< prev
next >
Wrap
Text File
|
2006-04-25
|
5KB
|
215 lines
#!/bin/bash
#
# This is the modules-update script for Debian GNU/Linux.
# Written by Wichert Akkerman <wakkerma@debian.org>
# Copyright (C) 1998, 1999 Software in the Public Interest
#
# Modifications by Daniel Robbins <drobbins@gentoo.org>, Gentoo Foundation
# 02 Sep 2001 -- Removed "arch" stuff since I see no reason to have
# support for varying CPU architectures on a single system.
#
# Updated by Aron Griffis <agriffis@gentoo.org>
# 05 May 2004 -- handle --assume-kernel argument for livecd building
CFGFILE="/etc/modules.conf"
TMPFILE="${CFGFILE}.$$"
CFGFILE2="/etc/modprobe.conf"
TMPFILE2="${CFGFILE2}.$$"
CFGFILE3="/etc/modules.devfs"
TMPFILE3="${CFGFILE3}.$$"
CFGFILE4="/etc/modprobe.devfs"
TMPFILE4="${CFGFILE4}.$$"
MODDIR="/etc/modules.d"
ARCHDIR="${MODDIR}/arch"
HEADER="### This file is automatically generated by modules-update"
source /sbin/functions.sh
# Parse command-line
FORCE=false
ASSUME_KV=
while [ -n "$1" ]; do
case "$1" in
force)
FORCE=true ;;
--assume-kernel=*)
ASSUME_KV=${1#*=} ;;
*)
echo "Error: I don't understand $1" >&2
exit 1 ;;
esac
shift
done
# Set kernel version, either from --assume-kernel or uname -r
KV=${ASSUME_KV:-$(uname -r)}
if [[ $(KV_to_int ${KV}) -ge $(KV_to_int 2.5.48) ]]; then
KERNEL_2_5=true
else
KERNEL_2_5=false
fi
set -e
# Reset the sorting order since we depend on it
export LC_COLLATE="C"
depdir() {
dep="`sed -n -e '/[ \t]*depfile=/h;${x;s/[ \t]*depfile=//g;s,/[^/]*$,,p}' ${CFGFILE}`"
if [ -z "${dep}" ]
then
dep="/lib/modules/${KV}"
fi
echo "${dep}"
}
CFGFILES="${CFGFILE}"
if ${KERNEL_2_5}; then
CFGFILES="${CFGFILES} ${CFGFILE2} ${CFGFILE4}"
fi
for x in ${CFGFILES}
do
if [ -f "${x}" ]
then
if ! sed -ne 1p "${x}" | egrep -q "^${HEADER}"
then
echo "Error: the current ${x} is not automatically generated."
if $FORCE; then
echo "force specified, (re)generating file anyway."
else
echo "Use \"modules-update force\" to force (re)generation."
exit 1
fi
fi
fi
done
if [ 0 -ne "`id -u`" ]
then
echo "You have to be root to do this."
exit 2
fi
if [ -e "${CFGFILE}" ]
then
cp -f "${CFGFILE}" "${CFGFILE}".old
fi
if ${KERNEL_2_5}; then
if [ -e "${CFGFILE2}" ]
then
cp -f "${CFGFILE2}" "${CFGFILE2}".old
fi
if [ -e "${CFGFILE4}" ]
then
cp -f "${CFGFILE4}" "${CFGFILE4}".old
fi
fi
echo "${HEADER}" > "${TMPFILE}"
cat <<EOF >> "${TMPFILE}"
#
# Please do not edit this file directly. If you want to change or add
# anything please take a look at the files in ${MODDIR} and read
# the manpage for modules-update.
#
EOF
if [ -x /sbin/generate-modprobe.conf -a "${KERNEL_2_5}" = "true" ]
then
sed -e "s:the files in ${MODDIR}:${CFGFILE}:" \
"${TMPFILE}" > "${TMPFILE2}"
if [ -f "${CFGFILE3}" ]
then
sed -e "s:the files in ${MODDIR}:${CFGFILE3}:" \
"${TMPFILE}" > "${TMPFILE4}"
fi
fi
for cfg in "${MODDIR}"/* "${CONF}"
do
[ -d "${cfg}" ] && continue
[ ! -r "${cfg}" ] && continue
# Skip backup and RCS files; fixes bug 20597 (07 May 2004 agriffis)
[[ ${cfg} == *~ || ${cfg} == *.bak || ${cfg} == *,v ]] && continue
echo "### modules-update: start processing ${cfg}" >> "${TMPFILE}"
if [ -x ${cfg} ]
then
# $cfg can be executable; nice touch, Wichert! :)
"${cfg}" >> "${TMPFILE}"
else
cat "${cfg}" >> "${TMPFILE}"
fi
echo >> "${TMPFILE}"
echo "### modules-update: end processing ${cfg}" >> "${TMPFILE}"
echo >> "${TMPFILE}"
done
mv -f "${TMPFILE}" "${CFGFILE}"
if [ -x /sbin/generate-modprobe.conf -a "${KERNEL_2_5}" = "true" ]
then
# Make sure that generate-modprobe.conf can handle --assume-kernel
# if we were called with it.
if [[ -n ${ASSUME_KV} ]] && ! grep -qe --assume-kernel \
/sbin/generate-modprobe.conf
then
eerror "Error: modules-update called with --assume-kernel flag, but"
eerror "generate-modprobe.conf doesn't understand it. You need to"
eerror "install >=module-init-tools-3.0-r2"
exit 3
fi
if /sbin/generate-modprobe.conf ${ASSUME_KV:+--assume-kernel=${KV}} \
>> "${TMPFILE2}" 2> /dev/null
then
mv -f "${TMPFILE2}" "${CFGFILE2}"
else
ewarn "Warning: could not generate ${CFGFILE2}!"
rm -f "${TMPFILE2}"
fi
if [ -f "${CFGFILE3}" ]
then
gawk '$0 !~ /^[[:space:]]*include/ { print $0 }' "${CFGFILE3}" \
> "${TMPFILE3}"
export TESTING_MODPROBE_CONF="${TMPFILE3}"
if /sbin/generate-modprobe.conf ${ASSUME_KV:+--assume-kernel=${KV}} \
>> "${TMPFILE4}" 2> /dev/null
then
mv -f "${TMPFILE4}" "${CFGFILE4}"
echo >> "${CFGFILE4}"
echo "include /etc/modprobe.conf" >> "${CFGFILE4}"
else
ewarn "Warning: could not generate ${CFGFILE4}!"
rm -f "${TMPFILE4}"
fi
rm -f "${TMPFILE3}"
fi
fi
# We also call depmod here to stop insmod from complaining that modules.conf
# is more recent then modules.dep
#
if [ -d "`depdir`" -a -f /proc/modules ]
then
if [ -f /usr/src/linux/System.map ]; then
depmod -a -F /usr/src/linux/System.map ${KV}
else
ewarn "System.map not found - unable to check symbols"
fi
fi
# vim:ts=4